// 管理权限：管理页面上的路由
// 路由有两种：
// 静态路由 & 动态路由
//

import { constantRoutes, asyncRoutes } from "@/router/index";

const state = {
  // 路由对象
  routes: constantRoutes
};
const mutations = {
  // 添加路由规则
  SET_ROUTES(state, payload) {
    // 给路由添加动态路由 payload=动态路由
    state.routes = [...constantRoutes, ...payload];
  }
};
const actions = {
  // 路由筛选
  setRoutes({ commit }, menus) {
    // 定义一个新的数组，用来保存满足条件的新路由
    let newRoutes = [];
    menus.forEach(item => {
      let res = asyncRoutes.filter(subitem => {
        // 判断当前用户权限在动态路由中是否存在
        if (subitem.path == "/" + item) {
          return true;
        }
        return false;
      });
      newRoutes.push(...res);
    });
    commit("SET_ROUTES", newRoutes);
    // 返回出去(后续要用)
    return newRoutes;
  }
};

export default {
  namespaced: true, //开启命名空间
  state,
  mutations,
  actions
};
